package pers.kw.server.config;

import java.lang.annotation.*;

/**
 * 自定义分布式锁注解
 */
@Documented
@Inherited
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface DistributedLock {

    /**
     * 分布式锁key值
     * key值 不能有冒号
     *
     * @return
     */
    String lockKey() default "";

    /**
     * 作用范围：1：当前企业 2：全局
     * 用于拼接企业编号到 最终存储到key值为： REDIS_LOCK:locKey:compCode
     *
     * @return
     */
    int scope() default 1;

    /**
     * 锁类型：1: lock 2: tryLock
     *
     * @return
     */
    int lockType() default 2;

    /**
     * 锁的过期时间，单位秒
     *
     * @return
     */
    long leaseTime() default 10;


    /**
     * 尝试获取锁的等待时间，单位秒，仅lockType=2 有用
     *
     * @return
     */
    long waitTime() default 5;

    /**
     * 获取锁失败的异常信息提示，默认不提示
     * 仅lockType=2 有用
     *
     * @return
     */
    String errorTips() default "";
}
